//
// Created by User on 24-10-3.
//

#ifndef PACKET_PROVIDER_HPP
#define PACKET_PROVIDER_HPP

extern "C" {
struct AVCodecParameters;
struct AVRational;
}

namespace utils
{
    class media_packet;
}

namespace interfaces
{
    class packet_provider
    {
    public:
        packet_provider() = default;

        virtual ~packet_provider() = default;

        virtual utils::media_packet get_packet() = 0;

        virtual const AVCodecParameters* get_codec() const = 0;

        virtual AVRational get_timebase() const = 0;

        virtual int total_frames() const = 0;
    };

    class video_packet_provider
        : public packet_provider
    {
    };

    class audio_packet_provider
        : public packet_provider
    {
    };
}


#endif //PACKET_PROVIDER_HPP
